Make gdk_drawable_get_visible/clip_region handle the !viewable case
authorAlexander Larsson <alexl@redhat.com>
Mon, 20 Jul 2009 20:30:48 +0000 (22:30 +0200)
committerAlexander Larsson <alexl@redhat.com>
Mon, 20 Jul 2009 20:30:48 +0000 (22:30 +0200)
We can't access ->clip_region for these cases as its not yet calculated.

gdk/gdkwindow.c

index a3718bb2fc6895c3bfa44c59127fcfcf9e1efb4e..9ceb5d136187b7e89e03d5c628e198e8c59f792b 100644 (file)
@@ -3493,13 +3493,24 @@ gdk_window_get_composite_drawable (GdkDrawable *drawable,
   return tmp_pixmap;
 }
 
+static GdkRegion*
+gdk_window_get_visible_region (GdkDrawable *drawable)
+{
+  GdkWindowObject *private = (GdkWindowObject*) drawable;
+
+  if (private->viewable)
+    return gdk_region_copy (private->clip_region);
+  else
+    return gdk_region_new ();
+}
+
 static GdkRegion*
 gdk_window_get_clip_region (GdkDrawable *drawable)
 {
   GdkWindowObject *private = (GdkWindowObject *)drawable;
   GdkRegion *result;
 
-  result = gdk_region_copy (private->clip_region);
+  result = gdk_window_get_visible_region (drawable);
 
   if (private->paint_stack)
     {
@@ -3522,14 +3533,6 @@ gdk_window_get_clip_region (GdkDrawable *drawable)
   return result;
 }
 
-static GdkRegion*
-gdk_window_get_visible_region (GdkDrawable *drawable)
-{
-  GdkWindowObject *private = (GdkWindowObject*) drawable;
-
-  return gdk_region_copy (private->clip_region);
-}
-
 static void
 gdk_window_draw_drawable (GdkDrawable *drawable,
                          GdkGC       *gc,